/*************************************************************************
	> File Name: oj-401.cpp
	> Author: Wang Bo
	> Mail: 1276106221@qq.com
	> Created Time: 2020年11月18日 星期三 18时57分38秒
 ************************************************************************/

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;

struct node {
    int x, y, step;
};

int n, num[505][505];
int dir[12][2] {
    //马部分
    1, 2,
    1, -2,
    -1, 2,
    -1, -2,
    2, 1,
    2, -1,
    -2, 1,
    -2, -1,
    //象部分
    2, 2,
    2, -2,
    -2, 2,
    -2, -2
};

int main() {
    memset(num, -1, sizeof(num));
    queue<node> que;
    que.push((node){1, 1, 0});
    num[1][1] = 0;
    while (!que.empty()) {
        node temp = que.front();
        que.pop();
        for (int i = 0; i < 12; ++i) {
            int x = temp.x + dir[i][0];
            int y = temp.y + dir[i][1];
            if (x < 1 || y < 1 || x > 500 || y > 500 || num[x][y] != -1) {
                continue;
            }
            num[x][y] = temp.step + 1;
            que.push((node){x, y, temp.step + 1});
        }
    }
    cin >> n;
    for (int i = 0; i < n; ++i) {
        int a, b;
        cin >> a >> b;
        cout << num[a][b] << endl;
    }
    return 0;
}
